[Chapter 34] 34.6 Interrelating Options
Author: Bryan Costales & Eric Allman
Date: 1999-01-06T21:01:18Z

#

| Chapter 34 Options |

## 34.6 Interrelating Options

At the end of this chapter we list all the options in alphabetical order for easy lookup and explain each in detail. Here, we present them grouped by application with only a brief description.

### 34.6.1 File Locations

The only file that sendmail knows the location of is its configuration file. [3] Options in the configuration file tell sendmail where all other files and directories are located. The options that specify file locations are summarized in Table 34.6. All file location options are of type string.

> [3] Beginning with V8.6 sendmail, it also knows the location of its pid file.

Table 34.6: File Location Options
Option Name |  |  | File
--- | --- | --- | ---
AliasFile | (`A`) | Section 34.8.1 | Aliases file and its database files
ErrorHeader | (`E`) | Section 34.8.23 | Set error message file
ForwardPath | (`J`) | Section 34.8.27 | Set ~/.forward search path
HelpFile | (`H`) | Section 34.8.28 | Specify location of the help file
HostsFile |  | Section 34.8.30 | Specify alternate /etc/hosts file
QueueDirectory | (`Q`) | Section 34.8.48 | Location of queue directory
SafeFileEnvironment |  | Section 34.8.58 | Directory for safe file writes
ServiceSwitchFile |  | Section 34.8.61 | Specify file for switched services
StatusFile | (`S`) | Section 34.8.66 | Statistics file
UserDatabaseSpec | (`U`) | Section 34.8.75 | Specify user database

File locations should be expressed as full pathnames. Use of relative names will cause the location to become relative to the queue directory or, for some options, will cause the name to be interpreted as something other than a file or directory name.

### 34.6.2 The Queue

Several options combine to determine your site's policy for managing the sendmail queue (see Chapter 23, The Queue). Among them is one that specifies the location of the queue directory and another that sets the permissions given to files in that directory. The list of all options that affect the queue is shown in Table 34.7.

Table 34.7: Options that Affect the Queue
Option Name |  |  | Description
--- | --- | --- | ---
CheckpointInterval | (`C`) | Section 34.8.7 | Checkpoint the queue
ForkEachJob | (`Y`) | Section 34.8.26 | Process queue files individually
MaxQueueRunSize |  | Section 34.8.38 | Max queue messages processed
MinFreeBlocks | (`b`) | Section 34.8.40 | Define minimum free disk blocks
MinQueueAge |  | Section 34.8.41 | Skip queue file if too young
QueueDirectory | (`Q`) | Section 34.8.48 | Location of queue directory
QueueFactor | (`q`) | Section 34.8.49 | Factor for high-load queuing
QueueLA | (`x`) | Section 34.8.50 | On high load queue only
QueueSortOrder |  | Section 34.8.51 | How to presort the queue
QueueTimeout | (`T`) | Section 34.8.52 | Limit life in queue to days
RecipientFactor | (`y`) | Section 34.8.53 | Penalize large recipient lists
RetryFactor | (`Z`) | Section 34.8.56 | Increment per job priority
SuperSafe | (`s`) | Section 34.8.67 | Queue everything just in case
TempFileMode | (`F`) | Section 34.8.68 | Permissions for temporary files
Timeout.queuereturn |  | Section 34.8.70.14 | Timeout life in queue
Timeout.queuewarn |  | Section 34.8.70.15 | Timeout for still-in-queue warnings

### 34.6.3 Managing Aliases

In addition to knowing the location of the aliases file, some options determine how that file and its associated database files will be used. For example, there is an option that tells sendmail to automatically rebuild the database files whenever the aliases file is changed. The list of all aliases-related options is shown in Table 34.8.

Table 34.8: Options for Managing Aliases
Option Name |  |  | Description
--- | --- | --- | ---
AliasFile | (`A`) | Section 34.8.1 | Define the location of the aliases file
AliasWait | (`a`) | Section 34.8.2 | Wait for aliases file rebuild
AutoRebuildAliases | (`D`) | Section 34.8.4 | Autorebuild the aliases database
CheckAliases | (`n`) | Section 34.8.6 | Check right-hand side of aliases
ServiceSwitchFile |  | Section 34.8.61 | Specify file for switched services

### 34.6.4 Controlling Machine Load

Several options control the sendmail program's behavior under high-machine-load conditions. They are intended to reduce the impact of sendmail on machines that provide other services and to help protect sendmail from overburdening a machine. The list of options that determine and help to prevent high-load conditions is shown in Table 34.9.

Table 34.9: Options That Determine Load
Option Name |  |  | Description
--- | --- | --- | ---
ClassFactor | (`z`) | Section 34.8.8 | Multiplier for priority increments
ConnectionRateThrottle |  | Section 34.8.12 | Incoming SMTP connection rate
HoldExpensive | (`c`) | Section 34.8.29 | Queue for expensive mailers
MaxDaemonChildren |  | Section 34.8.35 | Maximum forked children
MinQueueAge |  | Section 34.8.41 | Skip queue file if too young
QueueFactor | (`q`) | Section 34.8.49 | Factor for high-load queuing
QueueLA | (`x`) | Section 34.8.50 | On high load queue only
RefuseLA | (`X`) | Section 34.8.54 | Refuse connections on high load

### 34.6.5 Connection Caching

V8 sendmail has connection caching to improve the performance of SMTP-transported mail. In processing the queue or delivering to a long list of recipients, keeping a few SMTP connections open (in case another message is for one of those same sites) improves the speed of transfers. Caching is most useful on busy mail hub machines but can benefit any machine that sends a great deal of network mail. Table 34.10 lists the options for how connections will be cached.

Table 34.10: Options That Determine Connection Caching
Option Name |  |  | Description
--- | --- | --- | ---
ConnectionCacheSize | (`k`) | Section 34.8.10 | Multiple-SMTP connections
ConnectionCacheTimeout | (`K`) | Section 34.8.11 | Multiple-SMTP timeouts

The sendmail program checks its connection cache just before opening up a new connection to a host. If the cache contains an entry for that host, sendmail sends an SMTP RSET command to the host to make sure the connection is still active. If the SMTP RSET succeeds, the connection is re-used. If the SMTP RSET times out (see Section 34.8.70.18, the `Timeout.rset` option), or fails, or if the host was not in the cache, an new connection is made.

### 34.6.6 Problem Solving

The sendmail program offers four options that will help in locating and solving some mail delivery problems. You are encouraged to enable the first two shown in Table 34.11. The third is of value only if you have many delivery agents (see Chapter 30, Delivery Agents).

Table 34.11: Options That Help with Problem Solving
Option Name |  |  | Description
--- | --- | --- | ---
LogLevel | (`L`) | Section 34.8.33 | Set (increase) logging level
PostmasterCopy | (`P`) | Section 34.8.46 | Extra copies of postmaster mail (not V5 BSD)
StatusFile | (`S`) | Section 34.8.66 | Specify statistics fil
Verbose | (`v`) | Section 34.8.76 | Run in verbose mod

Other means to solve problems are described in Chapter 37, Debugging with -d, which describes the `-d` debugging command-line switch, and in Chapter 36, The Command Line, (specifically Section 36.4, "Processing the Command Line"), which describes the `-X` traffic-logging command-line switch.

### 34.6.7 Other Options

The sendmail program supports a vast array of options. Take the time to study all the options (described at the end of this chapter) at least enough to get a basic feeling for what they do. Then, as you gain experience with sendmail, you'll know where to look for the particular option that will meet your needs.

34.5 Option Argument Types |  | 34.7 Pitfalls